08 您所在的位置:网站首页 C语言hello world输出字符画 08

08

2023-06-26 02:54| 来源: 网络整理| 查看: 265

一  字符串的定义及基本使用 1、什么是字符串

被双引号引用的字符集合!例如:”hello” 、”world”,或者是以 '\0' 结尾的字符数组!!! 比如:char ch[] = {'h', 'e', '\0'} 注意:”hello” 中其实在在末尾也有'\0' 只是我们看得到。

也就是说:字符串 一定是以 '\0'结尾 的!! 如何验证”hello”中有字符'\0'呢? printf("%d\n", *(p+5)); 输出的结果为整数0则说明结尾是'\0'

2、字符串和字符数组的联系及区别

可以把字符串当做字符数组一样处理,字符数组不一定可以当做字符串处理,为什么? 因为字符数组中不一定有 '\0'。

char ch[] = {‘a’, 'b', '\0', 'c', 'd'};

这种情况我们可以把数组ch当成字符串 “ab” 在实际工作过程中我们经常会有如下需求,我们需要用一个字符数组用来保存多个字符,并且需要将这多个字符当成字符串 ,但是我们在定义字符数组的时候只知道需要保存的字符的最大的数目(假设是30),实际存储的时候存储的字符可能会小于30,如何保障把这些字符当成字符串呢?

c har name[ 30 ] ; memset(name, 0, sizeof(name));

注意:在定义字符数组长度的时候 通常要比实际要存储的字节数的数目+1(因为最后需要留一个字节存 ’ \0 ’ )。

3、字符串的操作 #include #include #include int main(){ //字符串的操作: char *str; char ch[] = {"hello"}; str = ch; //可以通过指针str操作ch //方法1: str[1] = 'a'; //当一个指针指向了一个数组以后,我们就可以通过指针使用下标法直接访问数组中的元素 //方法2: *(str + 1) = 'a'; //也可以将字符串常量赋值给一个指针变量 char *p = "hello"; /*注意:p是一个指针变量,应该保存的是一个地址,因此 char *p = "hello"; 并不是将字符串"hello"赋值给 指针变量p,而是将存储字符串 "hello"的内存空间的首地址赋值给p */ return 0; }

4、将字符数组中的每个元素赋值为'\0' #include void *memset(void *s, int c, size_t n);

memset 功能:将指针s所指向的内存空间中的n个字节填充成c 示例代码:

#include #include int main() { char ch[10]; memset(ch, 0, sizeof(ch)); //memset(ch, 0, sizeof(ch)); printf("view the data ch: %d\n", ch[0]); return 0; } 5、请分析下面代码有何问题? char *p = "hello"; p[0] = 'A';

二 常见的字符串处理函数 1、atoi函数 #include int atoi(const char *nptr);

功能:将字符串转换成int类型 的整数,返回转换后的整数值。

#include #include #include int main(){ char *p = "1234"; int val = atoi(p); printf("view the data: %d\n", val); return 0; }

练习:编写代码实现atoi函数。

2、atof函数 #include double atof(const char *nptr)

功能:将 字符串转换成double类型的浮点数,返回转换后的浮点数

#include #include #include int main() { char *p = "123.456"; double val = atof(p); printf("%f\n", val); return 0; } 3、strlen函数 #include size_t strlen(const char *s);

功能:计算字符串的长度

#include #include #include int main() { char *ch = "hello"; char arr[] = {'A', 'B', 'C', '\0', 'D'}; printf("%d %d\n", strlen(ch), strlen(arr)); return 0; }

思考:为什么strlen(arr)得结果是3呢? 练习:编程实现strlen函数

#include #include #include int main(){ char *ch = "hello"; char arr[] = {'A', 'B', 'C', '\0', 'D'}; printf("%d %d\n", strlen(ch), strlen(arr)); return 0; }

思考:为什么strlen(arr)得结果是3呢? 练习:编程实现 strlen函数

#include #include #include int my_strlen(char ch[]) //int my_strlen(char *ch) { int cnt = 0; int i = 0; while (ch[i] != '\0') { cnt++; i++; } return cnt; } 4、strcpy函数 #include char *strcpy(char *dest, const char *src);

功能:把src所指向的字符串复制到dest所指向的空间中,'\0'也会拷贝过去 参数:dest:目的字符串 首地址src:源字符首地址 返回值: 成功:返回dest字符串的首地址 失败:NULL

示例代码:

#include #include int main(){ char *src = "hello"; char dst[10] = {0}; strcpy(dst, src); printf("src: %s, dst: %s\n", src, dst); return 0; }

注意: 1、dst的空间一定要大于从src中需要拷贝的内容所占用的空间,至少大1个字节(因为要给'\0'预留空间)。

#include #include int main(){ char a[4]; char b[4]; //hello strcpy(b, "hello"); printf("view the data b: %s\n", b); //hello printf("view the data a: %s\n", a); //0 return 0; }

2、strcpy的实现

char *strcpy(char *dest, const char *src, size_t n){ size_t i; for (i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有